import processing.serial.*;

PImage obr; //objekt pro ulozeni obrazku
int r,g,b,x,y, last;
Serial port;

void setup(){    
    if(Serial.list().length > 0){
        println(Serial.list());
        port = new Serial(this, Serial.list()[0], 19200);
        
        obr = loadImage("7.jpg"); //nacte obrazek
        obr.loadPixels(); //vytvori jednorozmerne pole pixelu
        
        //pole obr.pixels obsahuje jednotlive pixely obrazku
        if(obr.pixels.length != 256){ //test rozmeru
            size(200,20);
            text("Obrazek neni 16x16px.",10, height/2);
        }
        else{
            while(millis() - last < 100){ //chvilku pocka
            }
            size(16,16);
            last = millis();
            for(int i = 0; i < obr.pixels.length; i++){
                //tyto tri funkce (red()...) nactou informace o jednotlivych barvach pixelu
                r = int(red(obr.pixels[i]));
                g = int(green(obr.pixels[i]));
                b = int(blue(obr.pixels[i]));
                
                //z indexu pixelu v poli urcime souradnice
                x = i % 16; //sloupec
                y = (i - i%16)/16; //radek
                
                y = 15 - y; //prevraceni osy y
                
                while(millis() - last < 5){ //chvilku pocka
                } 
                    
                port.write(0+":"+x+":"+y+":"+r+":"+g+":"+b+":"); //nakonec odesleme retezec
                   
                println(x+","+y+","+r+","+g+","+b);
                last=millis();
            }
            fill(0);
            image(obr,0,0); //zobrazi obrazek i na PC
        }
    }
    else{
        println("Nenalezeno zadne zarizeni");
    }
}

void draw(){
    
}